A number of systems and programs are offered on the market for the design, the engineering and the manufacturing of objects. CAD is an acronym for Computer-Aided Design, e.g. it relates to software solutions for designing an object. CAE is an acronym for Computer-Aided Engineering, e.g. it relates to software solutions for simulating the physical behavior of a future product. CAM is an acronym for Computer-Aided Manufacturing, e.g. it relates to software solutions for defining manufacturing processes and operations. In such computer-aided design systems, the graphical user interface plays an important role as regards the efficiency of the technique. These techniques may be embedded within Product Lifecycle Management (PLM) systems. PLM refers to a business strategy that helps companies to share product data, apply common processes, and leverage corporate knowledge for the development of products from conception to the end of their life, across the concept of extended enterprise. The PLM solutions provided by Dassault Systemes (under the trademarks CATIA, ENOVIA and DELMIA) provide an Engineering Hub, which organizes product engineering knowledge, a Manufacturing Hub, which manages manufacturing engineering knowledge, and an Enterprise Hub which enables enterprise integrations and connections into both the Engineering and Manufacturing Hubs. All together the system delivers an open object model linking products, processes, resources to enable dynamic, knowledge-based product creation and decision support that drives optimized product definition, manufacturing preparation, production and service.
In such a context and in other contexts, there is a need to search existing modeled objects in a database according to different criteria.
Searching modeled objects in a database according to a predefined criterion may often be performed through three steps. The first step is to compute and associate to each modeled object of the database the value of at least one so-called “signature” or “descriptor” function for the modeled object. A signature function is a function that outputs compact information that is called “signature” and that synthetizes a typical aspect of the input. The second step is for the user to specify a query, for example by setting a specific signature value. This signature value can correspond to a selected object and the goal may be to find similar objects in the database. Alternatively, the signature value can correspond to an object being designed and the goal is, again, to find similar objects in the database. The third step is the searching step. It is for the system to find objects of the database a signature value of which corresponds to the user-inputted signature value. Signature values are massively compared during this step.
A signature may ideally be designed to require a small amount of memory, to be easy to compute and to be very rapid to compare, and yet lead to a relevant result with a high recall and a high precision.
FIG. 1 shows a diagram illustrating existing searching software products.
These existing software make use of numerical signatures based on planar silhouettes and view directions in order to index 3D modeled objects in a database. The following paper provides an example: Raluca Diana Petre, Zaharia Titus, Françoise Preteux, An experimental evaluation of view-based 2D/3D indexing methods, 2010 IEEE 26th Convention of Electrical and Electronics Engineers in Israel, November 2010, Israel. pp. 924-928.
Each 3D modeled object gives birth to a plurality of numerical signatures in the database, each one being computed according to said object and to a respective view direction. Database indexes can be understood as a finite (but very large) set of points in the space of numerical signatures. Populating the database is performed offline. Given the planar silhouette of an input 3D modeled object, a search may be to compute its numerical signature and to find the closest one in the database. This yields the output similar 3D modeled object and the output view direction associated with this closest numerical signature. This computation is performed inline, according to the user interaction.
However, these existing software are inaccurate in some situations. This is illustrated with reference to FIG. 2.
Suppose that two 3D modeled objects A and B are stored in a database with respective signature(s). Also suppose that one wants to query the database to find the closest object to an input object, and suppose that A is physically the correct result and should thus be returned by the query.
Now, let σ(A, U) and σ(A, V) be the respective numerical signatures of 3D object A according to view directions U and V stored in the database. Let σ(B, D) be the numerical signature of 3D object B according to view direction D stored in the database. Let σ* be the numerical signature of a silhouette of the input object provided by the query. Clearly, as shown on the figure, the numerical signature in the database that is closest to σ* can be σ(B, D) so that object B can be (incorrectly) found to be the object of the database most similar to the input object. For A to have been outputted as the result of the query, it would have been necessary that the numerical signature σ(A, W) of object A according to view direction W be also stored in the database. But although represented on the figure for the purpose of the explanation, and although view direction W is close to U and V, numerical signature σ(A, W) may simply not be in the database, depending on how the database was built. In such a case, the correct solution is unfortunately out of reach. This is because the database simply cannot just store all possible numerical signatures of a 3D object, due to obvious memory reasons.
Thus, despite the existing literature, there is still a need for improving the field of searching modeled objects in a database.